#from django import forms
#from django.utils.translation import ugettext_lazy as _
#
#import re
#from amway.models import Cliente, Pedido, Producto, ProductosPedido, PreciosProducto, Inventario, HistorialInventario, TipoTransaccion
#
#################################################################################
#date_dict = { 'class' : 'date-pick'  }
#nombre_cliente_dict = {'id' : 'nombrecliente'}
#prod_dict = {'id' : 'productos', 'size' : '35'}
#cliente_dict = {'id' : 'cliente'}
#################################################################################
#class AddPedidoClienteForm(forms.Form):
#    nombre_cliente = forms.CharField(max_length=100, widget=forms.TextInput(attrs=nombre_cliente_dict))
#    fecha = forms.DateField(widget=forms.TextInput(attrs=date_dict))
#    cliente = forms.CharField(widget=forms.HiddenInput(attrs=cliente_dict))
#    
#    def save(self, usuario):
#        nombre = self.cleaned_data['cliente']
#        cliente = Cliente.objects.get(nombre__exact=nombre, usuario=usuario)
#        codigo = Pedido.objects.set_codigo_pedido_cliente(usuario)
#        pedido = Pedido(codigo=codigo, fecha_compra=self.cleaned_data['fecha'],
#                         valor=0, cliente=cliente, usuario=usuario)
#        
#        pedido.save()
#        return pedido
#################################################################################
#class AddProductoPedidoCliente(forms.Form):
#        
#    producto = forms.CharField(widget=forms.TextInput(attrs=prod_dict))
#    cantidad = forms.CharField()
#    pedido = forms.CharField(widget=forms.HiddenInput())  
#    
#    def pedido_init_val(self, pedido_id):       
#        self.fields['pedido'].initial = pedido_id
#             
#        
#    def clean_producto(self):
#        producto = Producto.objects.get(referencia__iexact=self.cleaned_data['producto'])
#        
#        try:
#            prod_inv = Inventario.objects.get(producto__exact=producto)
#            if prod_inv.existencias == 0:
#                raise forms.ValidationError(_(u'Tiene 0 existencias de este producto en su Inventario'))
#        except Inventario.DoesNotExist:
#            raise forms.ValidationError(_(u'Este producto no existe en su Inventario'))
#        
#        return self.cleaned_data['producto']       
#        
#    
#    def save(self, usuario):
#        
#        producto = Producto.objects.get(referencia__iexact=self.cleaned_data['producto'])
#        pedido = Pedido.objects.get(pk=self.cleaned_data['pedido'])
#        precio_producto = PreciosProducto.objects.get_precio_x_fecha(producto, pedido.fecha_compra)
#        cantidad = self.cleaned_data['cantidad']        
#        
#        valor = Pedido.objects.set_valor_pedio(pedido.valor, precio_producto, cantidad)
#        pedido.valor = valor
#        
#        
#        inv = Inventario.objects.get(producto__exact=producto, usuario=usuario)
#        tt = TipoTransaccion.objects.get(pk=2)
#        h_inv = HistorialInventario.objects.create(fecha=pedido.fecha_compra, inventario=inv, transaccion=tt)        
#        inv.existencias -= int(cantidad)
#        
#        valor_prod_ped = int(precio_producto) * int(cantidad)
#        
#        prod_ped = ProductosPedido(producto=producto, pedido=pedido, cantidad=cantidad, precio_producto=precio_producto, valor=valor_prod_ped)
#        pedido.save()
#        inv.save()
#        prod_ped.save()
#################################################################################
#class AddPedidoEmpresario(forms.Form):
#    factura = forms.CharField()
#    fecha = forms.DateField(widget=forms.TextInput(attrs=date_dict))
#    
#    def save(self, usuario):
#        codigo = self.cleaned_data['factura']
#        
#        if re.search('0000', codigo):
#            cod = codigo.split('0000')[1]
#        else:
#            cod = codigo
#        
#        
#        fecha = self.cleaned_data['fecha']
#        pedido = Pedido(codigo=cod, fecha_ingreso=fecha, valor=0, usuario=usuario)
#        pedido.save()
#        return pedido
#################################################################################
#class AddProductoPedidoEmpresario(forms.Form):
#    
#    producto = forms.CharField(widget=forms.TextInput(attrs=prod_dict))
#    cantidad = forms.CharField()
#    pedido = forms.CharField(widget=forms.HiddenInput())  
#    
#    def pedido_init_val(self, factura_id):
#        
#        if re.search('0000', factura_id):
#            self.fields['pedido'].initial = factura_id.split('0000')[1]
#        else:
#            self.fields['pedido'].initial = factura_id        
#        
#    def save(self, usuario):
#        
#        producto = Producto.objects.get(referencia__iexact=self.cleaned_data['producto'])
#        pedido = Pedido.objects.get(pk=self.cleaned_data['pedido'])
#        precio_producto = PreciosProducto.objects.get_precio_x_fecha(producto, pedido.fecha_ingreso)
#        tt = TipoTransaccion.objects.get(pk=1)
#        cantidad = self.cleaned_data['cantidad']
#        
#        valor = Pedido.objects.set_valor_pedio(pedido.valor, precio_producto, cantidad)
#        
#        pedido.valor = valor
#        
#        valor_prod = int(precio_producto) * int(cantidad)
#        
#        try:
#            inv = Inventario.objects.get(producto__exact=producto, usuario=usuario)
#            inv.existencias += int(cantidad)
#            h_inv = HistorialInventario.objects.create(fecha=pedido.fecha_ingreso, inventario=inv, transaccion=tt)
#            inv.save()
#        except Inventario.DoesNotExist:
#            inv = Inventario.objects.create(existencias=cantidad, valor=valor_prod, usuario=usuario, producto=producto)
#            h_inv = HistorialInventario.objects.create(fecha=pedido.fecha_ingreso, inventario=inv, transaccion=tt)
#        
#        
#        
#        
#        
#        
#        prod_ped = ProductosPedido(producto=producto, pedido=pedido, cantidad=cantidad, precio_producto=precio_producto, valor=valor_prod)
#        pedido.save()
#        prod_ped.save()
#################################################################################